﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
using EpsiRisk.MoteurJeu;
using EpsiRisk.DonneesPlateau;

namespace EpsiRisk.AffichageJeu
{
    public class ClassZoneMenu : ClassZone
    {
        /// <summary>
        /// texture du bouton phase suivante
        /// </summary>
        static Texture2D SpritePhaseSuivante;


        /// <summary>
        /// textures du bouton menu
        /// </summary>
        static Texture2D SpriteMenu;
        static Texture2D SpriteMenuActif;
        static Texture2D SpriteMenuInactif;
        static Texture2D SpriteBackgroundJoueurCourant;
        static Texture2D SpriteJoueurCourant;
        static Texture2D SpriteBarre;
        static Texture2D SpriteBackgroundBarre;

        /// <summary>
        /// texture de la bordure
        /// </summary>
        static Texture2D SpriteBorder;

        private ClassBouton next;
        private ClassBouton menu;

        public ClassZoneMenu()
        {
            position = new Vector2(700, 500);
            height = 100;
            width = 100;
            backcolor = Color.BurlyWood;
        }

        void next_Clicked(object sender, EventArgs e)
        {
            if (ClassEtatPartie.joueurCourant() == null || ClassEtatPartie.joueurCourant().estHumain)
            {
                if (ClassEtatPartie.partieEnCours)
                {
                    Console.WriteLine("Clic sur passer la phase");
                    ClassEtatPartie.terminerPhase();
                }
            }
        }

        void menu_Clicked(object sender, EventArgs e)
        {
            Console.WriteLine("Clic sur menu");

            if (ClassDonneesGlobales.zonePopupMenu.Visible)
            {
                ClassDonneesGlobales.zonePopupMenu.Visible = false;
                //menu.ButtonImage = SpriteMenu;
                //SpriteMenu = SpriteMenuInactif;
            }
            else
            {
                ClassDonneesGlobales.zonePopupMenu.Visible = true;
                //menu.ButtonImage = SpriteMenuActif;
                //SpriteMenu = SpriteMenuActif;
            }

        }

        internal override void initialiser(ContentManager content)
        {
            SpritePhaseSuivante = content.Load<Texture2D>("Sprites/phaseSuivante");
            SpriteMenuActif = content.Load<Texture2D>("Sprites/menu-2-actif");
            SpriteMenuInactif = content.Load<Texture2D>("Sprites/menu-2");
            SpriteMenu = SpriteMenuInactif;
            SpriteBorder = content.Load<Texture2D>("Sprites/SpriteBorderMenu");
            SpriteBackgroundJoueurCourant = content.Load<Texture2D>("Sprites/SpriteFondjoueurcourant");
            SpriteJoueurCourant = content.Load<Texture2D>("Sprites/Spritejoueurcourant");
            SpriteBarre = content.Load<Texture2D>("Sprites/barre");
            SpriteBackgroundBarre = content.Load<Texture2D>("Sprites/Spritebouttonvide");
            //ajout des boutons
            next = new ClassBouton(SpritePhaseSuivante);
            next.position = new Vector2(50, 38);
            next.height = 35;
            next.width = 50;
            AddBouton(next);
            next.Clicked += new EventHandler(next_Clicked);
            menu = new ClassBouton(/*SpriteMenuActif, */SpriteMenuInactif);
            menu.position = new Vector2(18, 12);
            menu.height = 22;
            menu.width = 69;
            AddBouton(menu);
            menu.Clicked += new EventHandler(menu_Clicked);
        }

        internal override void Draw(SpriteBatch spriteBatch)
        {
            base.Draw(spriteBatch);
            spriteBatch.Begin();
            spriteBatch.Draw(SpriteBorder, position, null, Color.White, 0, new Vector2(0, 0), 0.5f, SpriteEffects.None, 0);
            // 42 territoires : barre de 84 pixels de large sur 16 de haut
            // par barres de 2*16
            int decal = 0;
            if (ClassEtatPartie.partieEnCours)
            {
                spriteBatch.Draw(SpriteBackgroundBarre, new Vector2(position.X + 8, position.Y + 75), Color.Gray);
                foreach (ClassJoueur j in ClassJoueur.listeJoueurs)
                {
                    for (int k = 0; k < j.nbTerritoires; k++)
                    {
                        spriteBatch.Draw(SpriteBarre, new Vector2(position.X + 11 + decal * 2, position.Y + 78), j.cCouleur);
                        decal++;
                    }
                }
                spriteBatch.Draw(SpriteBackgroundJoueurCourant, new Vector2(position.X + 10, position.Y + 42), Color.White);

                if (ClassEtatPartie.joueurCourant() != null)
                {
                    spriteBatch.Draw(SpriteJoueurCourant, new Vector2(position.X + 10, position.Y + 42), ClassEtatPartie.joueurCourant().cCouleur);
                }
            }
            spriteBatch.End();
        }

    }
}
